import itertools

class Solution:
    __button = {'2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl', '6': 'mno', '7': 'pqrs', '8': 'tuv', '9': 'wxyz'}
    def letterCombinations(self, digits: str) -> 'List[str]':
        if len(digits) == 0:
            return []
        keys = [self.__button[s] for s in digits]
        return [''.join(x) for x in itertools.product(*keys)]
